#ifndef OWL_MATH_H_
#define OWL_MATH_H_
#include "common.h"

void OwlFill(int N, Float alpha, Float *x, int incx);

void OwlCopy(int N, Float *x, int incx, Float *y, int incy);

void OwlScal(int N, Float alpha, Float *x, int incx);

void OwlMean(Float *x, int batch, int filters, int spatial, Float *mean);

void OwlVariance(Float *x, Float *mean, int batch, int filters, int spatial, Float *variance);

void OwlNormalize(Float *x, Float *mean, Float *variance, int batch, int filters, int spatial);

void OwlAxpy(int N, Float alpha, Float *x, int incx, Float *y, int incy);

void OwlGemm(int TA, int TB, int M, int N, int K, Float alpha,
	Float *A, int lda, Float *B, int ldb, Float beta, Float *C, int ldc);

void OwlL2(int n, Float *pred, Float *truth, Float *delta, Float *error);

Float OwlSum(int n, Float *a);

#endif // OWL_MATH_H_
